;2015H25tvOQ̉
;Exam2015H27tPrg3 ċA
;---------------------------
MAIN START
	LD GR1,N
	CALL FACT2
	ST GR0,ANS
	RET
N DC 6
ANS DS 1
	END
;-----------------------
FACT2 START
	RPUSH
	CALL RSUB    ;ċA̖{̂Ă
	RPOP
	RET          ;vO֖߂
RSUB LD GR4,GR1
	SUBL GR4,=1
	JPL NEXT     ; N >=̏ꍇ NEXT
	LD GR0,=1    ; GR0 <--- F(0), F(1)̒l
	RET
NEXT PUSH 0,GR1
	LAD GR1,-1,GR1
	CALL RSUB    ; F(n-1)vZ
	POP GR2
	CALL MULT
	RET
	END
;------------------
FACT START
	RPUSH
	LD GR0,=1
	SUBL GR1,=1
;--------------
	JPL NEXT    ; i	a j̓ G
;--------------------------
	JUMP FIN
NEXT LD GR2,=1
LP LAD GR2,1,GR2
	CALL MULT
;--------------------
	SUBL GR1,=1 ;ij̓@I
;---------------------
	JNZ LP
FIN RPOP
	RET
	END
;-----------------------------------
MULT START ;VtgɂZ
	RPUSH
	LD GR1,GR0 ;搔fqPɕێ
	LD GR0,=0  ;Zʂ̏
	LD GR3,=15
	LD GR2,GR2
LP	JZE FIN
	JPL CONT
	LD GR4,GR1
;----------------
	SLL GR4,0,GR3 ;ij̓@E
;---------------------
	ADDL GR0,GR4
CONT LAD GR3,-1,GR3
	SLL GR2,1
	JUMP LP
FIN RPOP
	RET
	END
